package com.engine4cloud.tdf.supervision.dto.result;

import com.engine4cloud.tdf.common.core.constant.enums.InvAuditActionStatusEnum;
import com.engine4cloud.tdf.common.core.constant.enums.InvAuditResultStatusEnum;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.util.List;

/**
 * 调查评估信息表-响应对象
 *
 * @author wenjie
 * @date 2024-02-29 10:42:47
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "调查评估信息表-响应对象")
public class DcpgInvestigationResultDTO extends CreateTimeResultDTO {

    /**
     * 主键
     */
    @Schema(description = "主键")
    private Long id;

    /**
     * 调查评估编号
     */
    @Schema(description = "调查评估编号")
    private String dcpgbh;

    /**
     * 拟适用社区矫正人员类型
     */
    @Schema(description = "拟适用社区矫正人员类型")
    private String nsysqjzrylx;


    /**
     * 拟适用社区矫正人员类型名称
     */
    @Schema(description = "拟适用社区矫正人员类型名称")
    private String nsysqjzrylxmc;

    /**
     * 委托编号
     */
    @Schema(description = "委托编号")
    private String wtbh;

    /**
     * 委托单位
     */
    @Schema(description = "委托单位")
    private String wtdw;

    /**
     * 被告人姓名
     */
    @Schema(description = "被告人姓名")
    private String bgrxm;

    /**
     * 证件类型
     */
    @Schema(description = "证件类型")
    private String bgrzjlx;

    /**
     * 证件类型名称
     */
    @Schema(description = "证件类型名称")
    private String bgrzjlxmc;

    /**
     * 被告人证件号
     */
    @Schema(description = "被告人证件号")
    private String bgrzjh;

    /**
     * 被告人性别
     */
    @Schema(description = "被告人性别")
    private String bgrxb;

    /**
     * 被告人性别名称
     */
    @Schema(description = "被告人性别名称")
    private String bgrxbmc;

    /**
     * 被告人出生日期
     */
    @Schema(description = "被告人出生日期", format = "YYYY-MM-DD")
    private LocalDate bgrcsrq;

    /**
     * 被告人居住地址
     */
    @Schema(description = "被告人居住地址")
    private String bgrjzddz;

    /**
     * 被告人工作单位
     */
    @Schema(description = "被告人工作单位")
    private String bgrgzdw;

    /**
     * 原判刑期
     */
    @Schema(description = "原判刑期")
    private String ypxq;

    /**
     * 原判刑期开始日期
     */
    @Schema(description = "原判刑期开始日期")
    private LocalDate ypxqksrq;

    /**
     * 原判刑期结束日期
     */
    @Schema(description = "原判刑期结束日期")
    private LocalDate ypxqjsrq;

    /**
     * 原判刑罚
     */
    @Schema(description = "原判刑罚")
    private String ypxf;

    /**
     * 原判刑罚名称
     */
    @Schema(description = "原判刑罚名称")
    private String ypxfmc;

    /**
     * 附加刑
     */
    @Schema(description = "附加刑")
    private String fjx;

    /**
     * 附加刑名称
     */
    @Schema(description = "附加刑名称")
    private String fjxmc;

    /**
     * 判决机关
     */
    @Schema(description = "判决机关")
    private String pjjg;

    /**
     * 判决机关名称
     */
    @Schema(description = "判决机关名称")
    private String pjjgmc;

    /**
     * 判决日期
     */
    @Schema(description = "判决日期")
    private LocalDate pjrq;

    /**
     * 调查意见审核人
     */
    @Schema(description = "调查意见审核人")
    private String dcyjshr;

    /**
     * 调查结果说明
     */
    @Schema(description = "调查结果说明")
    private String dcjgsm;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String bz;

    /**
     * 部门id
     */
    @Schema(description = "部门id")
    private Long deptId;

    /**
     * 租户id
     */
    @Schema(description = "租户id")
    private Long tenantId;

    /**
     * 罪名列表
     */
    @Schema(description = "罪名列表")
    private List<DcpgInvCrimeNameResultDTO> crimeNameList;

    /**
     * 被告人居住地所在省
     */
    @Hidden
    @Schema(description = "被告人居住地所在省，内部流转使用，不对外")
    private String bgrjzdszs;

    /**
     * 被告人固定居住地所在地
     */
    @Hidden
    @Schema(description = "被告人固定居住地所在地，内部流转使用，不对外")
    private String bgrjzdszds;

    /**
     * 被告人固定居住地所在县
     */
    @Hidden
    @Schema(description = "被告人固定居住地所在县，内部流转使用，不对外")
    private String bgrjzdszxq;

    /**
     * 被告人固定居住地
     */
    @Hidden
    @Schema(description = "被告人固定居住地，内部流转使用，不对外")
    private String bgrjzd;

    /**
     * 调查评估结果- 1-适合社区矫正，0-不适合社区矫正
     */
    @Schema(description = "调查评估结果- 1-适合社区矫正，0-不适合社区矫正")
    private String dcpgjg;

    /**
     * 拟适用矫正类别
     */
    @Schema(description = "拟适用矫正类别")
    private String nsyjzlb;

    /**
     * 拟适用矫正类别名称
     */
    @Schema(description = "拟适用矫正类别名称")
    private String nsyjzlbmc;

    /**
     * 调查审核结果（用于详情上）
     */
    @Schema(description = "调查审核结果")
    private InvAuditResultStatusEnum dcshjg;

    /**
     * 调查结果审核说明（用于详情上）
     */
    @Schema(description = "调查结果审核说明", example = "调查结果审核说明")
    private String dcshsm;

    /**
     * 审核动作(用于列表上)
     */
    @Schema(description = "审核动作，CREATE-创建;COUNTRY_ASSIGN-县指派;VILLAGE_ACCEPT-所接收;VILLAGE_REFUSE-所拒绝;VILLAGE_SUBMIT-所提交;COUNTRY_APPROVE-县同意;COUNTRY_REJECT-县拒绝;DELIVERY-交付执行;REFUSE_RECEIVE-交付拒绝", example = "CREATE")
    private InvAuditActionStatusEnum preAction;

    /**
     * 被告人居住地
     */
    @Schema(description = "被告人居住地", example = "[\"460000\",\"46000A\",\"469006\",\"36327\"]")
    private List<String> residenceAreaList;

    /**
     * 委托调查书
     */
    @Schema(description = "委托调查书")
    private List<JzdxFileResultDTO> invFileList;

    /**
     * 调查结果列表
     */
    @Schema(description = "调查结果列表")
    private List<DcpgSurveyResultDTO> surveyList;

    /**
     * 调查评估意见书
     */
    @Schema(description = "调查评估意见书")
    private List<JzdxFileResultDTO> evaluationList;

}